#include"gobang.h"
#include<stdio.h>
#include"getch.h"
#include<stdlib.h>
//定义角色
 char role='@';

//定义棋盘
char board[15][15];

//定义光标的坐标
char cur_x = 7;
char cur_y = 7;

//棋盘初始化
void board_init(void)
{
	for(char x=0; x<15;x++)
	{
		for (char y=0;y<15;y++)
		{
			board[x][y] = '*';
		}
	}
}

//显示棋盘初始化光标
void board_show(void)
{  
	//清理屏幕
	system("clear");

   //初始化光标的坐标系
   printf("\33[2J");
   for(char x=0;x<15;x++)
   {
	   for(char y=0;y<15;y++)
	   {
		   printf("%c ",board[x][y]);
	   }
	   printf("\n");
   }


}

//落子
void key_get(void)
{
   printf("===请 %c 落子===",role);
   while(1)
   {
       printf("\33[%hhd;%hhdH",cur_x,cur_y*2-1);
	   switch(getch())
	   {
           case 183:
		   cur_x>1 && cur_x--;continue;
		   case 184:
		   cur_x<15 && cur_x++;continue;
		   case 185:
		   cur_y<15 && cur_y++;continue;
		   case 186:
		   cur_y>1 && cur_y--;continue;
		   case 10:
		 if( board[cur_x-1][cur_y-1] == '*')
		   {
			 board[cur_x-1][cur_y-1] = role;
			 return ;
		   }
		   
	   }
   }
}



static char key_count(char x_offset,char y_offset)
{
      //char key_x= cur_x -1;
	  //char key_y= cur_y -1;
        char count =0;
	  for(char x=cur_x-1+x_offset,y=cur_y-1+y_offset;
	  	x>=0&&x<15&&y>=0&&y<15; x+=x_offset,y+=y_offset)
	  {
		  if(board[x][y]==role)
		  {
			  count++;
		  }
		  else
		  {
			  break;
		  }
	}
		  return count;
}

bool judge_win(void)
{
    if(key_count(0,-1)+key_count(0,1) >=4)
	{
		return true;
	}
	if(key_count(-1,0)+key_count(1,0) >=4)
	{
         return true;
	}
	if(key_count(-1,-1)+key_count(1,1) >=4)
	{
		return true;
	}
	if(key_count(-1,1)+key_count(1,-1)>=4)
	{
		return true;
	}
	return false;	
}
//判断5子

	/*
    int count =0;

	//横向判断
	for(char y=cur_y;y<16;y++)
	{
          if(board[cur_x-1][y]==role)
		  {
            count++;
		  }
		  else
		  {
			  break;
	 		}
	}
     for(char y=cur_y-2;y>=0;y--)
	 {
         if(board[cur_x-1][y]==role)
		 {
			 count++;
		 }
		 else
		 {
			 break;
		 }

	 }
	 if(count >= 4)
	 {
		 return 1;
	 }

	 //纵向判断
     count =0;
	 for(char x=cur_x-2;x>=0;x--)
		 {
               if(board[x][cur_y-1] == role)
			   {
				   count++;
			   }
			   else
			   {
				   break;
			   }
		 }
       for(char x=cur_x;x<16;x++)
	   {
		   if(board[x][cur_y-1]==role)
		   {
			   count++;
		   }
		   else
		   {
			   break;
		   }
       }
	   if(count>=4)
	   {
		   return 1;
	   }

       //\向判断
	    count =0;
	   for(char x=cur_x-2,y=cur_y-2;x>=0,y>=0;x--,y--)
		   {
			   if(board[x][y] ==role)
			   {
				   count++;
			   }
			   else
			   {
				   break;
			   }
		   }
		   for(char x=cur_x,y=cur_y;x<16,y<16;x++,y++)
		   {
			   if(board[x][y] == role)
			   {
				   count++;
			   }
			   else
			   {
				   break;
				}
		   }
		   if(count>=4)
		   {
			   return 1;
		   }

		   // ／向判断
		    count =0;
		   for(char x=cur_x-2,y=cur_y;x>=0,y<16;x--,y++)
			   {
				   if(board[x-1][y-1] == role)
				   {
					   count++;
				   }
				   else
				   {
					   break;
				   }
			   }
			 for(char x=cur_x,y=cur_y-2;x<16,y>=0;x++,y--)
			 {
				 if(board[x-1][y-1] ==role)
				 {
					 count++;
				 }
				 else
				 {
					 break;
				 }
			 }
			 if(count>=4)
			 {
				 return 1;
			 }
			 */
			 



//切换角色
void change_role(void)
{
   if('@'==role)
   { 
	   role= '#';
   }
   else
   {
	   role='@';
   }
}
